/** \file Convolution.h
    \author belot.nicolas
	Mathematical operation on convolution
*/

#ifndef COVOLUTION_H
#define CONVOLUTION_H

#include "Buffer.h"

namespace libtrckr {
class Convolution {
	/** \class libtrckr::Convolution
	    \brief Mathematical operaiton on convolution */
	public:
	/**Default Constructor */
	Convolution();
	/**Create an Empty Convolution of size x*/
	Convolution(int);
	/** Create a new convolution */
	Convolution(double*, int);
	/** Create a convolution from a buffer*/
	Convolution(const Buffer& );
	/**Copy constructor*/
	Convolution(const Convolution&);
	/**Destructor*/
	virtual ~Convolution();

	/** \return the size of the convolution */
	uint  getSize() const;
	/** set the vector of convolution */
	void setContent(double*,int);
	/** Multiply 2 Convolution*/
	Convolution operator * (const Convolution&);
	/** Multiply and Assign */
	void operator *= (const Convolution&);
	/**Add 2 Convolution*/
	Convolution operator + (const Convolution&);
	/**Add and assign */
	void operator += (const Convolution&);

	protected:
		double* getCoef() const;

	private:
		double* convolutionD;//data...
		uint convolutionS;//Size
	
};

}
#endif

